// plugin/components/input/index.js
Component({
  options: {
      multipleSlots: true, // 在组件定义时的选项中启用多slot支持
      addGlobalClass: true
  },
  /**
   * 组件的属性列表
   */
  properties: {
    className: {
      type: String,
      value: ''
    },
    value: {
      type: String,
      value: ''
    },
      /**
     * 输入框的唯一标识，有传入点击 title 会聚焦输入框
     */
    name: {
      type: String,
      value: ''
    },
    /**
     * 输入框左侧标题，若传入为空，则不显示标题
     */
    title: {
      type: String,
      value: ''
    },
    /**
     * 输入框类型
     * @defalut 'text'
     */
    type: {
      type: String,
      value: 'text' | 'number' | 'password' | 'phone' | 'idcard' | 'digit'
    },
    /**
     * 是否出现错误
     * @default false
     */
    error: {
      type: Boolean,
      value: false
    },
    /**
     * 是否显示清除按钮，需要传入 onChange 事件来改变 value
     * @default false
     */
    clear: {
      type: Boolean,
      value: false
    },
    /**
     * 是否显示下划线边框
     * @default true
     */
    border: {
      type: Boolean,
      value: true
    },
    /**
     * 是否禁止输入，禁止点击按钮
     * @default false
     */
    disabled: {
      type: Boolean,
      value: false
    },
    /**
     * 占位符
     */
    placeholder: {
      type: String,
      value: ''
    },
    /**
     * 指定 placeholder 的样式，只在小程序有效
     */
    placeholderStyle: {
      type: String,
      value: ''
    },
    /**
     * 指定 placeholder 的样式类，只在小程序有效
     */
    placeholderClass: {
      type: String,
      value: ''
    },
    /**
     * 是否可编辑
     * @default true
     */
    editable: {
      type: Boolean,
      value: true
    },
    /**
     * 键盘弹起时，是否自动上推页面
     * @default false
     */
    adjustPosition: {
      type: Boolean,
      value: false
    },
    /**
     * 是否自动聚焦
     * @default false
     */
    autoFocus: {
      type: Boolean,
      value: false
    },
    /**
     * 是否聚焦
     * @default false
     */
    focus: {
      type: Boolean,
      value: false
    },
    /**
     * 是否必填
     * @default false
     */
    required: {
      type: Boolean,
      value: false
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    _focus: false
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onClick: function(e) {
      this.triggerEvent('click', e)
    },
    onTipsClick: function(e) {
      this.triggerEvent('tipsclick', e)
    },
    onInput: function(e) {
      const value = e.detail.value
      this.triggerEvent('change', value)
    },
    onFocus: function(e) {
      this.setData({
        _focus: true
      })
      this.triggerEvent('focus', e)
    },
    onBlur: function(e) {
      this.setData({
        _focus: false
      })
      this.triggerEvent('blur', e)
    },
    onConfirm: function(e) {
      
      this.triggerEvent('confirm', e)
    },
    clearValue: function(e) {
      this.triggerEvent('clearvalue', e)
    },
    onErrorClick: function(e) {
      this.triggerEvent('errorclick', e)
    },
  }
})
